问: 我们把bsp层抽出来,

🔍 溯源 ✍️ Jack | 📅 2024-08-08 | 👍 5 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/BSP架构 #技术/性能优化 #质量/精华

原帖 | Jack | 2024-08-08 09:15 | 👍5 | 阅读约1

问:

我们把bsp层抽出来,付出了什么代价?我想到的是
i、增加了调用的复杂度,但是我不知道怎么去量化这个东西,对于不同主频的芯片,它会带来一个怎么样的影响?
ii、用函数指针来解耦,增加了ram的占用,一个指针占用4字节(对32位机器),不知道对不对?
iii、不知道还有没有其他的代价?

答:

1、关于增加了调用的复杂度,这里我们通过指针嵌套确实有一些增加寻址次数,但是,这样的代码结构更容易让人理解和解耦明确,移植性强。而且,对于现在动不动100Mhz起步的,单条指令执行时间:STM32F10X单片机在主频为72MHz下,C语言程序执行一条指令需要的时间可认为10ns~100ns。那么执行一次指针跳转就是2条指令,如果层级最多,顶多算4层指针,那么也就是平均200ns,这些开销对于运行速度影响是非常小的,而且72mhz已经很慢了。另外,我们在后面的课程还有sct指定驱动链接区域,把这些常用的IO都通过固定的地址给确定出来,然后直接用立即数访问,这比函数嵌套还快,我们课程能学到的优化方法就不下三种。
2、一样的,通过固定链接地址,这些指针的消耗在后期都将极大减少甚至消失,如果有必要这么极端应用的话。
3、代价就是对开发人员水平较高。


相关笔记